#ifndef VISCOMPONENTGL_H
#define VISCOMPONENTGL_H

#pragma once

#include "ToolkitLayer.h"
#include <LDF/VisComponent.h>

/**
 * This class extends the VisComponent class by adding OpenGL code for the pre-
 * and post-rendering functions. This code is responsible for applying the
 * linear transformations (scale, rotation, and translation, in this order)
 * associated with the component state. This is done for performance
 * optimization, since otherwise every drawing strategy of the component would
 * need to query its state values, apply the transformations, and clean up the
 * modelview matrix.
 *
 * @author Fabricio Anastacio - fabriciocfa@yahoo.com
 * @since September 24, 2007
 */
class TOOLKITLAYER_API VisComponentGL : public VisComponent
{
	// Attributes
protected:
	

	// Methods
public:
	VisComponentGL(void);
	~VisComponentGL(void);

	
protected:
	/**
	 * Executes the subclass specified code before rendering this component.
	 */
	inline virtual void preRender();
	/**
	 * Executes the subclass specified code after rendering this component.
	 */
	virtual void postRender();
};

#endif // VISCOMPONENTGL_H
